package de.reichelt.fxrequi.data;

import java.util.ArrayList;
import java.util.List;
import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;

public class RequirementX {
  
  @Attribute private String counter;
  @Attribute private String title;
  @Attribute private String state;
  @Element private String descr;
  @Element(required=false) private String remark;
  @Element(required=false) private String projectVersion;
  @Element(required=false) private String artefact;
  @Attribute private String priority;
  @Attribute(required=false) private String stakeholder;
  @Attribute(required=false) private String stakeholderType;
  @Attribute(required=false) private String category;
  @Attribute private Boolean testRequired;
  @Attribute(required=false) private String worker;
  @Attribute(required=false) private String workState;
  @Element(required=false) private String workComment;
  @Element(required=false) private String solution;
  @Attribute(required=false) private Integer costs;
  @Attribute(required=false) private String keywords;
  @ElementList(required=false) private List<RequirementX> requirements;
  
  public RequirementX() {
    requirements = new ArrayList<>();
  }

  public RequirementX(String counter, String title, String state, String descr, 
          String remark, String projectVersion, String artefact, String priority, 
          String stakeholder, String stakeholderType, String category, 
          Boolean testRequired, String worker, String workState, String workComment, 
          String solution, Integer costs, String keywords) {
    this.counter = counter;
    this.title = title;
    this.state = state;
    this.descr = descr;
    this.remark = remark;
    this.projectVersion = projectVersion;
    this.artefact = artefact;
    this.priority = priority;
    this.stakeholder = stakeholder;
    this.stakeholderType = stakeholderType;
    this.category = category;
    this.testRequired = testRequired;
    this.worker = worker;
    this.workState = workState;
    this.workComment = workComment;
    this.solution = solution;
    this.costs = costs;
    this.keywords = keywords;
    requirements = new ArrayList<>();
  }

  public String getCounter() {
    return counter;
  }

  public void setCounter(String counter) {
    this.counter = counter;
  }

  public String getTitle() {
    return title;
  }

  public void setTitle(String title) {
    this.title = title;
  }

  public String getState() {
    return state;
  }

  public void setState(String state) {
    this.state = state;
  }

  public String getDescr() {
    return descr;
  }

  public void setDescr(String descr) {
    this.descr = descr;
  }

  public String getRemark() {
    return remark;
  }

  public void setRemark(String remark) {
    this.remark = remark;
  }

  public String getProjectVersion() {
    return projectVersion;
  }

  public void setProjectVersion(String projectVersion) {
    this.projectVersion = projectVersion;
  }

  public String getArtefact() {
    return artefact;
  }

  public void setArtefact(String artefact) {
    this.artefact = artefact;
  }

  public String getPriority() {
    return priority;
  }

  public void setPriority(String priority) {
    this.priority = priority;
  }

  public String getStakeholder() {
    return stakeholder;
  }

  public void setStakeholder(String stakeholder) {
    this.stakeholder = stakeholder;
  }

  public String getStakeholderType() {
    return stakeholderType;
  }

  public void setStakeholderType(String stakeholderType) {
    this.stakeholderType = stakeholderType;
  }

  public String getCategory() {
    return category;
  }

  public void setCategory(String category) {
    this.category = category;
  }

  public Boolean getTestRequired() {
    return testRequired;
  }

  public void setTestRequired(Boolean testRequired) {
    this.testRequired = testRequired;
  }

  public String getWorker() {
    return worker;
  }

  public void setWorker(String worker) {
    this.worker = worker;
  }

  public String getWorkState() {
    return workState;
  }

  public void setWorkState(String workState) {
    this.workState = workState;
  }

  public String getWorkComment() {
    return workComment;
  }

  public void setWorkComment(String workComment) {
    this.workComment = workComment;
  }

  public String getSolution() {
    return solution;
  }

  public void setSolution(String solution) {
    this.solution = solution;
  }

  public Integer getCosts() {
    return costs;
  }

  public void setCosts(Integer costs) {
    this.costs = costs;
  }

  public String getKeywords() {
    return keywords;
  }

  public void setKeywords(String keywords) {
    this.keywords = keywords;
  }

  public List<RequirementX> getRequirements() {
    return requirements;
  }

  public void setRequirements(List<RequirementX> requirements) {
    this.requirements = requirements;
  }

  
}
